"""
-*- coding:utf-8 -*-
__project__ = "python_study_one"
__file_name__ = "study2020_11_29"
__author__ = "admin"
__time__ = "2020/11/29 14:15"
__product_name__ = PyCharm 
"""
# ________周三作业_______
"""
1、创建一个对象后默认调用(A)
A、__init__    B、__str__    C、__add__    D、__and__
2、类是对象的_抽象_、对象是类的_实例_.
3、对象是由_属性_、_方法_两部分构成.
4、创建学生类：
	类名：Student
	属性：name（姓名）、age（年龄）、sex（性别） 
方法：
	def info(self) # 打印学生的姓名、年龄、性别
	def draw(self) #打印”XX会画画呢”
描述：创建学生类，通过学生类创建一个学生对象，分别调用学生的info方法.
5、创建动物类：
	类名：animal
	属性(使用魔法方法实现)：name（姓名）、age（年龄）、color（颜色） 
方法：
	def info(self) # 打印姓名、年龄、毛颜色
	def run（self）#打印“XX会跑呢”
描述：创建动物类，通过动物类创建一个动物对象，分别调用动物的info和run方法.

class Student(object):

    def __init__(self):
        self.name = "小明"
        self.age = 18
        self.sex = "男"

    def info(self):
        print("姓名：%s,年龄：%d, 性别：%s" % (self.name, self.age, self.sex))

    def draw(self):
        print("%s 会画画呢" % self.name)


xm = Student()
xm.info()
xm.draw()

class animal(object):

    def __init__(self, name, age, color):
        self.name = name
        self.age = age
        self.color = color

    def info(self):
        print("姓名：%s,年龄：%d, 颜色：%s" % (self.name, self.age, self.color))

    def run(self):
        print("%s 会跑呢" % self.name)

xg = animal("小狗",2,"黑色")
xg.info()
xg.run()
"""
# ________周五作业_______
"""
1、下列程序结果是______.
# 答：初始化 类A 销毁
class A:

    def __init__(self):
        print("初始化")

    def __del__(self):
        print("销毁")

    def __str__(self):
        return "类A"
a = A()
print(a)

2. 下列程序执行结果______.
# 答：动物在叫  汪汪汪
class Animal(object):

    def shut(self):
        print("动物在叫")
class Dog(Animal):

    def shut(self):
        super().shut()
        print("汪汪汪")
dog = Dog()
dog.shut()

3. 创建猫类：
	类名：Cat
	属性：无
描述：创建一个Cat类，通过Cat类创建一个对象cat，执行print(cat)输出“喵？喵？喵？”.
答：
class Cat(object):

    def __init__(self):
        print("喵？喵？喵？")

cat = Cat()
print(cat)

4.创建计算器类：
	类名：Calculator
	属性：number_1（数字一）、number_2（数字二） 
方法：
	def __init__(self,number_1,number_2): 
# 类的初始化方法
	def add(self) # 返回数字一加数字二的值 
	def sub(self) # 返回数字一减去数字二的值
	def div(self) # 返回数字一除以数字二的值
	def mul(self) # 返回数字一乘以数字二的值
描述：创建计算器类，通过计算器类创建一个计算器对象，在创建对象时需要传入数字一和数字二，分别调用计算器的四种方法.
答：
class Calculator(object):

    def __init__(self, number_1, number_2):
        self.number_1 = number_1
        self.number_2 = number_2

    def add(self):
        ret1 = self.number_1 + self.number_2
        print(ret1)

    def sub(self):
            ret2 = self.number_1 - self.number_2
            print(ret2)

    def div(self):
            ret3 = self.number_1 / self.number_2
            print(ret3)

    def mul(self):
            ret4 = self.number_1 * self.number_2
            print(ret4)


num = Calculator(10,2)
num.add()
num.sub()
num.div()
num.mul()

5.创建Cat和Dog类分别继承Animal类，分别重写shut和eat方法，创建Cat类对象cat和Dog类对象dog，
  分别调用cat和dog的shut和eat方法
class Animal:

    def shut(self):
		# 打印叫声
        pass

    def eat(self):
		# 打印爱吃的食物
        pass
答：
class Animal:

    def shut(self):
        print("打印叫声")
		# 打印叫声
        pass

    def eat(self):
        print("打印爱吃的食物")
		# 打印爱吃的食物
        pass

class Cat(Animal):
    def shut(self):
        print("打印猫叫")

    def eat(self):
        print("小猫爱吃鱼")

class Dog(Animal):
    def shut(self):
        print("打印狗叫")

    def eat(self):
        print("小狗爱吃肉")

cat = Cat()
cat.shut()
cat.eat()

dog = Dog()
dog.shut()
dog.eat()

面向对象三大特性是_封装_、_继承_、_多态_.
单例模式创建保证实例只创建__1____次.
"""

